/**
 * fileReader1.js - 启动HTTP服务读取并返回文件内容
 * 要求：
 * 1) 监听 8081 端口
 * 2) 执行时可传文件名参数：node 1.js <文件名>
 *    - 如果传入：检查脚本所在目录下是否存在；存在则读取并在浏览器显示；不存在则输出错误提示
 *    - 如果未传入：默认读取当前脚本文件(1.js)的内容
 * 3) 使用 fs.readFile 读取
 */

const http = require('http');
const fs = require('fs');
const path = require('path');

const port = 8081;

// 解析命令行参数中的文件名
const cliFilename = process.argv[2];
const fallbackFile = __filename; // 当前脚本
const targetPath = path.join(__dirname, cliFilename || path.basename(fallbackFile));

function readTargetFile(callback) {
  fs.access(targetPath, fs.constants.F_OK, (existsErr) => {
    if (existsErr) {
      callback(new Error(`文件不存在: ${targetPath}`));
      return;
    }
    fs.readFile(targetPath, 'utf8', (readErr, data) => {
      if (readErr) {
        callback(readErr);
        return;
      }
      callback(null, data);
    });
  });
}

const server = http.createServer((req, res) => {
  if (req.url !== '/') {
    res.writeHead(404, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end('404 Not Found');
    return;
  }

  readTargetFile((err, content) => {
    if (err) {
      res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' });
      res.end(`读取失败：${err.message}`);
      return;
    }

    res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
    res.end(content);
  });
});

server.listen(port, () => {
  console.log(`服务已启动：http://localhost:${port}/`);
  if (cliFilename) {
    console.log(`将尝试读取脚本目录下的文件: ${targetPath}`);
  } else {
    console.log('未提供文件名参数，默认返回当前脚本内容');
  }
});


